package redis

import (
	"context"
	"github.com/go-redis/redis/v8"
)

// CreateRedisClient
//
// 描述: 创建一个redis客户端实例
//
// 参数:
//
//	addr：redis的服务器地址
//	password：redis密码
//	db：使用的数据库编号
//
// 返回值:
//
//	*redis.Client：redis客户端实例
//	error：错误信息
func CreateRedisClient(addr string, password string, db int) (*redis.Client, error) {
	client := redis.NewClient(&redis.Options{
		Addr:     addr,     // Redis 服务器地址
		Password: password, // Redis 服务器密码
		DB:       db,       // 使用的数据库编号
	})

	// 创建 context
	ctx := context.Background()
	// 测试连接
	_, err := client.Ping(ctx).Result()
	if err != nil {
		return nil, err
	}

	return client, nil
}

// DestroyRedisClient
//
// 描述: 销毁一个redis客户端实例
//
// 参数:
//
//	client：传入一个redis客户端实例
//
// 返回值:
//
//	error：错误信息
func DestroyRedisClient(client *redis.Client) error {
	if client == nil {
		return nil // 如果客户端实例为 nil，直接返回
	}

	return client.Close()
}

const Nil = redis.Nil
